// import 'package:date_format/date_format.dart';
// import 'package:dio/dio.dart';
// import 'package:flutter_easyloading/flutter_easyloading.dart';
// import 'package:flutter_oss_aliyun/flutter_oss_aliyun.dart';
// import 'package:lcapp/api/interface/comcon_api.dart';
// import 'package:lcapp/api/request/response_data.dart';
// import 'package:lcapp/data/media_asset_data_entity.dart';
// import 'package:lcapp/model/event/event_bus.dart';
// import 'package:lcapp/model/oss/oss_util.dart';
// import 'package:lcapp/model/toast/toast.dart';
// import 'package:lcapp/tools/file_tool.dart';
// import 'package:uuid/uuid.dart';
//
// class AsrOss {
//   static Dio? dio;
//   static void ossUploadVideo(List<MediaAssetDataEntity> assets,
//       {int? uploadId,int? type}) async {
//     List<MediaAssetDataEntity> files = [];
//     for (var asset in assets) {
//       if (asset.type == 1 && !asset.uri!.startsWith('http')) {
//         String uid = Uuid().v4();
//         String fixName = FileTool.getSuffixName(asset.uri!);
//         String date = formatDate(
//             DateTime.fromMillisecondsSinceEpoch(
//                 DateTime
//                     .now()
//                     .millisecondsSinceEpoch),
//             [yyyy, '-', mm, '-', dd]);
//         asset.title = 'app/$date/img/$uid';
//         asset.ext = fixName;
//         files.add(asset);
//       } else if (asset.type == 2 && !asset.uri!.startsWith('http')) {
//         String uid = Uuid().v4();
//         String fixName = FileTool.getSuffixName(asset.uri!);
//         String date = formatDate(
//             DateTime.fromMillisecondsSinceEpoch(
//                 DateTime
//                     .now()
//                     .millisecondsSinceEpoch),
//             [yyyy, '-', mm, '-', dd]);
//         asset.title = 'app/$date/img/$uid';
//         asset.ext = fixName;
//         files.add(asset);
//       }
//     }
//
//     if (files.isEmpty) {
//       eventBus.fire(OssUploadState(1, assets, uploadId: uploadId,type: type));
//       return;
//     }
//     int num = 0;
//     for (int i = 0; i < files.length; i++) {
//       // if (dio == null) {
//       //   dio = Dio();
//       //   dio.options.responseType = ResponseType.plain;
//       //   dio.options.connectTimeout = 30000; //30s
//       //   dio.options.receiveTimeout = 30000; //30s
//       //   dio.interceptors.add(LogInterceptor());
//       // }
//       // Client.init(
//       //     ossEndpoint: "oss-cn-shanghai.aliyuncs.com",
//       //     bucketName: "outin-28766d1a025c11ed92bd00163e1a625e",
//       //     // dio: dio
//       // );
//       var file = files[i];
//       ResponseData res;
//       showLoading();
//       if (file.type == 1) {
//         res = await CommonAPI.getImgUploadToekn(file.title??'');
//       } else {
//         res = await CommonAPI.getVideoUploadToekn(file.title??'',file.ext??'');
//       }
//       if(res.code==200){
//         try{
//           Map info = res.data;
//           Map address = info['uploadAddress'];
//           Map authInfo = info['uploadAuth'];
//           file.mediaId = info['mediaId'];
//           print('authInfo===='+authInfo['ExpireUTCTime'].toString());
//           print('authInfo===='+authInfo['AccessKeyId'].toString());
//           print('authInfo===='+authInfo['AccessKeySecret'].toString());
//
//           // Auth auth =  Auth(
//           //     accessKey: authInfo['AccessKeyId'],
//           //     accessSecret: authInfo['AccessKeySecret'],
//           //     expire: authInfo['ExpireUTCTime'],
//           //     secureToken:authInfo['SecurityToken']
//           // );
//           // Client().deleteObject(address['FileName']);
//           // await Client().putObjectFile(
//           //   file.uri,
//           //   fileKey: address['FileName'],
//           //   auth: auth,
//           //   option: PutRequestOption(
//           //     onSendProgress: (count, total) {
//           //       print("send: count = $count, and total = $total");
//           //       // EasyLoading.showProgress(count / total, status: '正在上传中...');
//           //       if (count == total) {
//           //         file.url = OssUtil.videoOssURL + '/' + address['FileName'];
//           //         num = num + 1;
//           //       }
//           //     },
//           //     override: true,
//           //     aclModel: AclMode.publicRead,
//           //     headers: {"cache-control": "no-cache"},
//           //     callback: Callback(
//           //       callbackUrl: "callback url",
//           //       callbackBody: "{\"mimeType\":\${mimeType}, \"filepath\":\${object},\"size\":\${size},\"bucket\":\${bucket},\"phone\":\${x:phone}}",
//           //       callbackVar: {"x:phone": "android"},
//           //       calbackBodyType: 'application/json',
//           //     ),
//           //   ),
//           // );
//
//           AliyunOssClient client = AliyunOssClient(
//               accessKeyId: authInfo['AccessKeyId'],
//               accessKeySecret: authInfo['AccessKeySecret'],
//               securityToken: authInfo['SecurityToken']
//               );
//           AliyunOssConfig config = AliyunOssConfig(
//               endpoint: "https://oss-cn-shanghai.aliyuncs.com",
//               bucket: "outin-28766d1a025c11ed92bd00163e1a625e",
//               directory: "");
//
//           AliyunOssResult result = await client.upload(id: 'appupload$i',config: config,filePath: file.uri,ossFileName: address['FileName']);
//           if(result.state == AliyunOssResultState.success){
//             file.url = OssUtil.videoOssURL + '/' + address['FileName'];
//             num++;
//           }
//
//
//         }catch(e){
//           hideLoading();
//         }
//       }
//     }
//     hideLoading();
//     if (num == files.length) {
//       eventBus.fire(OssUploadState(1, assets, uploadId: uploadId,type: type));
//     } else {
//       showToast('上传失败，请稍后重试~');
//       eventBus.fire(OssUploadState(0, assets, uploadId: uploadId,type: type));
//     }
//   }
//
//   static void apiUpload(List<MediaAssetDataEntity> assets,
//       {int? uploadId,int? type}) async {
//     List<OssUploadData> files = [];
//     String appUrl = 'app';
//     for (var asset in assets) {
//       if (asset.type == 1 && !asset.uri.startsWith('http')) {
//         OssUploadData uploadData = OssUploadData(asset.uri);
//         String uploadPath;
//         String date = formatDate(
//             DateTime.fromMillisecondsSinceEpoch(
//                 DateTime
//                     .now()
//                     .millisecondsSinceEpoch),
//             [yyyy, '-', mm, '-', dd]);
//         String uid = Uuid().v4();
//         String fixName = FileTool.getSuffixName(uploadData.filePath);
//         uploadPath = '$appUrl/$date/img/$uid$fixName';
// //        var content = new Utf8Encoder().convert(uploadPath);
// //        var digest = md5.convert(content);
// //        String sign = hex.encode(digest.bytes);
// //        uploadPath = '$sign/$uploadPath';
//         uploadPath = '$uploadPath';
//         uploadData.uploadPath = uploadPath;
//         uploadData.type = 1;
//         files.add(uploadData);
//         asset.uploadPath = '/$uploadPath';
//         asset.url = OssUtil.ossURL + asset.uploadPath;
//       } else if (asset.type == 2 && !asset.uri.startsWith('http')) {
//         OssUploadData uploadData = OssUploadData(asset.uri);
//         String basePath;
//         String date = formatDate(
//             DateTime.fromMillisecondsSinceEpoch(
//                 DateTime
//                     .now()
//                     .millisecondsSinceEpoch),
//             [yyyy, '-', mm, '-', dd]);
//         String uid = Uuid().v4();
//         String fixName = FileTool.getSuffixName(uploadData.filePath);
//         basePath = '$date/video/$uid';
// //        var content = new Utf8Encoder().convert(basePath);
// //        var digest = md5.convert(content);
// //        String sign = hex.encode(digest.bytes);
// //        String uploadPath = '$sign/$basePath$fixName';
//         String uploadPath = '$appUrl/$basePath$fixName';
//         uploadData.uploadPath = uploadPath;
//         uploadData.type = 2;
//         files.add(uploadData);
//         asset.uploadPath = '/$uploadPath';
//         asset.url = OssUtil.ossURL + asset.uploadPath;
//
//         OssUploadData vuploadData = OssUploadData(asset.videoCoverUri);
//         String vfixName = FileTool.getSuffixName(vuploadData.filePath);
// //        String vuploadPath = '$sign/$basePath$vfixName';
//         String vuploadPath = '$appUrl/$basePath$vfixName';
//         vuploadData.uploadPath = vuploadPath;
//         vuploadData.type = 1;
//         files.add(vuploadData);
//         asset.videoUploadPath = '/$vuploadPath';
//         asset.videoCoverUrl = OssUtil.ossURL + asset.videoUploadPath;
//       }
//     }
//
//     if (files.isEmpty) {
//       eventBus.fire(OssUploadState(1, assets, uploadId: uploadId));
//       return;
//     }
//     if (dio == null) {
//       dio = Dio();
//       dio.options.responseType = ResponseType.plain;
//       dio.options.connectTimeout = 30000; //30s
//       dio.options.receiveTimeout = 30000; //30s
//       dio.interceptors.add(LogInterceptor());
//     }
//     int count = 0;
//     bool isSuccess = true;
//     for (int i = 0; i < files.length; i++) {
//       var file = files[i];
//       String path = file.filePath;
//       String name = FileTool.getFileName(path);
//       FormData data = FormData.fromMap({
//         'key': file.uploadPath,
//         'policy': OssUtil.policy,
//         'x-oss-content-type': file.type == 1 ? 'image/png' : 'video/mpeg',
//         'OSSAccessKeyId': OssUtil.ossAccessKeyId,
//         'success_action_status': '200', //让服务端返回200，不然，默认会返回204
//         'signature': OssUtil.getSignature(OssUtil.ossAccessKeySecret),
//         'file': await MultipartFile.fromFile(path,
//             filename: name) //  fileData['localUrl']
//       });
//       dio.post(OssUtil.ossURL, data: data,
//           onSendProgress: (int progress, int total) {
//             if (isSuccess) {
//               EasyLoading.showProgress(progress / total, status: '正在上传中...');
//             }
//           }).then((value) {
//         count = count + 1;
//         if (count == files.length) {
//           hideLoading();
//           eventBus.fire(OssUploadState(1, assets, uploadId: uploadId,type: type));
//         }
//       }, onError: (error) {
//         hideLoading();
//         isSuccess = false;
//         showToast('上传失败，请稍后重试~');
//         eventBus.fire(OssUploadState(0, assets, uploadId: uploadId,type: type));
//       });
//     }
//   }
// }
//
// class OssUploadData{
//   OssUploadData(this.filePath);
//   int type;
//   String filePath;
//   String uploadPath;
// }
